Alteryxウィークリーチャレンジ#6中級やってみた!
アルテリックス?アルタリクス?どちらでもわたしは一向にかまわんッッ!の國崎です。
Alteryxウィークリーチャレンジ#6をやってみたので、そちらの解説記事をご紹介します。
今回のチャレンジテーマは「#6:4月のクリプトアナリティクス」です。
今回のチャレンジでやること
お題
私たちは、次のトランスミッションを繰り返し受信しましたが、通信チャネルの信頼性がとても低くて解読不能でした! 各位置で最も頻度の高い文字をそれぞれの文字列で分析すれば、メッセージを再構築できると思います。
昨日、私たちは以下を受け取りました:
Htl2!
ce+lo
ve8lz
HDlcF
u8pho私たちは、最初の列にある「H」を1番、そして次の列にある「e」を2番目に最も頻繁に受信したので、「Hello」というあいさつが送られたと考えていました。
次のメッセージの解読を手伝ってもらえますか?
用意されたエクセルデータ
ゴール
上のエクセルデータの各文字列ごとに使われている単語で最も多いものを抜き出しつなげる。
(ある言葉になっている)
レッツチャレンジ!
フォーミュラで各行の文字数を算出する
フォーミュラを使い以下の式を書いて今回の用意された各行の文字列が何文字かを把握します。
Length([data])
これを行う意図としては、この後に使う正規表現で何文字分の列に分割すればいいか把握するために行います。
今回の作業で各行ごとの文字数が算出されました。
ソートで最大の文字数を知る
ソートを使って、各行の中で最大数の文字数がどれくらいかを把握します。
フォーミュラで作られた文字数カラムの[length]を降順で並び替えます。
今回のデータだとすべての行が62文字のため意味のない作業になりましたが、仮に各行の最大数にばらつきがあった場合はこの作業が必要になります。
正規表現で1文字毎のカラムを出力
正規表現で「.」を入力し各文字ごとのカラムを出力します。
出力方法は「トークン化」で、列に分割で今回のデータの最大文字数である「62」を指定します。
実行するとlength以降の文字列で各文字ごとのカラムが出力されました。
集計で各カラムごとの最頻度の文字を抽出する
集計を使い各カラムで最も使われている文字を抽出します。
今回の場合だとdata1~data62が各文字ごとに区切ったカラムなので、それぞれアクションで最頻値を指定して追加します。
転置で行を列の値に転換する
転置を使って行で出力された各カラムのデータを1つのカラムに転換します。
データ列で出力されたカラム[Mode_data1~Mode_data62]までにチェックを入れて実行します。
集計を再度使い全ての値を連結する
集計を再度使い、出力された列の値を全て連結します。
注意点としては、この時の区切り記号はナシにします。
You have successfully solved this challenge! CONGRATULATIONS!
あなたはこの課題を見事に解決した!おめでとう
シャレオツ。
まとめ
こんな感じでAlteryx#6をやってみました。
他の方の解答を見ると、やり方が色々あるみたいで見比べてみると面白い発見がありそうな気もします。
本日はこの辺で。